package com.os.ordersystem.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//注解@ 简化代码
//@Data默认提供getter和setter(红色小辣椒)
//@AllArgsConstructor 生产全参构造方法
//@NoArgsConstructor生产无参构造方法
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResultDTO<T> {
    //封装一个返回给前端的响应状态码
    private int code;

    //封装一个返回前端的响应状态信息 success erro/成功或者失败
    private String msg;

    //T表示任意类型，封装一个返回给前端的数据信息，所有信息放在data里
    private T data;

    //
    public ResultDTO(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    //成功的状态码
    private static final int SUCCESS_CODE=200;   //常量都用大写定义，每个单词用下划线隔开
    //失败的状态码
    private static final int ERRO_CODE=503;

    //成功的状态信息,
    private static final String SCUUESS_MSG ="成功";    //状态信息用sting类型
    private static final String ERRO_MSG ="失败";

    //封装一个成功的方法（带参数）
    public static<T> ResultDTO<T> success(T data){
        return new ResultDTO<>(SUCCESS_CODE,SCUUESS_MSG,data);
    }

    //封装一个失败的方法（带参数）
    public static<T> ResultDTO<T> erro(T data){
        return new ResultDTO<>(ERRO_CODE,ERRO_MSG,data);
    }




    //封装一个成功的方法（）
    public static<T> ResultDTO<T> success(){
        return new ResultDTO<>(SUCCESS_CODE,SCUUESS_MSG);
    }

    //封装一个失败的方法（）
    public static<T> ResultDTO<T> erro(){
        return new ResultDTO<>(ERRO_CODE,ERRO_MSG);
    }


}
